#[钛妹]: 对称差集和并集怎么用？remove和discard又有何不同？
#[钛哥]: 收官之战！用实际案例演示五大核心操作！

#[钛妹]: remove的正确打开方式？
pets = {"dog", "cat", "parrot"}
pets.remove("cat")           # 删除存在的元素
print(pets)                  # {'dog', 'parrot'}

#[钛妹]: 删除不存在的元素会怎样？
try:
    pets.remove("fish")       # 尝试删除不存在元素
except KeyError as e:
    print(f"捕获错误：{e}")    # 输出：'fish' is not in the set

#[钛妹]: 对称差集是什么效果？
set1 = {1, 2, 3}
set2 = {3, 4, 5}
sym_diff = set1 ^ set2       # 运算符写法
print(sym_diff)              # {1, 2, 4, 5}

#[钛妹]: 方法版本怎么用？
sym_diff_v2 = set1.symmetric_difference(set2)
print(sym_diff_v2)           # 结果相同

#[钛妹]: ^= 怎么用？
set3 = {"a", "b", "c"}
set4 = {"c", "d", "e"}
set3 ^= set4                # 原地修改
print(set3)                  # {'a', 'b', 'd', 'e'}

#[钛妹]: 方法版本对比？
set5 = {"a", "b", "c"}
set5.symmetric_difference_update(set4)
print(set5)                  # 同上效果

#[钛妹]: 如何合并多个集合？
group1 = {"A", "B"}
group2 = {"B", "C"}
group3 = {"C", "D"}
union_set = group1 | group2 | group3  # 运算符写法
print(union_set)            # {'A', 'B', 'C', 'D'}

#[钛妹]: 方法版本有什么优势？
union_method = group1.union(group2, group3, {"E"})
print(union_method)         # 可合并多个参数 {'A','B','C','D','E'}

#[钛妹]: update能做什么神奇操作？
nums = {1, 2}
nums.update([3,4], {5}, (6,))  # 支持任意可迭代对象
print(nums)                   # {1,2,3,4,5,6}

#[钛妹]: 运算符版本怎么用？
nums |= {7, 8}               # 等价于update
print(nums)                  # {1,2,3,4,5,6,7,8}

#[钛妹]: 对比remove和discard？
test_set = {10, 20, 30}
test_set.discard(40)         # 安静失败
# test_set.remove(40)        # 会引发KeyError

#[钛哥]: 终极总结：
# remove()        指定删除（元素需存在） 示例: s.remove(x)
# symmetric_difference() 对称差集   ^ 示例: s ^ t
# symmetric_difference_update() 原地对称差集  ^= 示例: s ^= t
# union()         并集操作        | 示例: s | t
# update()        原地合并        |= 示例: s.update(t)

#[钛妹]: 终于集齐所有集合方法！注意remove的雷点和update的灵活性！
#[钛妹]: 温馨提示：对称差集就是找不同，并集就像拼图游戏，记得用对方法哦！